﻿/*
 *	Copyright (c) 2009 Queensland University of Technology. All rights reserved.
 *	The QUT Bioinformatics Collection is open source software released under the 
 *	Microsoft Public License (Ms-PL): http://www.microsoft.com/opensource/licenses.mspx.
 */
using System;
using System.Net;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using QUT.Bio.Util;

namespace QUT.Bio.SilverMap.ObjectModel {
	/// <summary>
	/// A generic "Sequence" interface.
	/// </summary>

	public interface ILinearDomain: IComparable, IComparable<ILinearDomain>, IEquatable<ILinearDomain> {
		/// <summary>
		/// A key that can be used to find the origin this sequence.
		/// </summary>
		
		SequenceSource Source {
			get;
		}
		
		/// <summary>
		/// A string representation of a key that can be used to identify the
		/// sequence within its source.
		/// </summary>
		
		string Id {
			get;
		}
		
		/// <summary>
		/// Get a string representing the long name of the sequence.
		/// </summary>
		
		string Name {
			get;
		}
		
		/// <summary>
		/// Get a string containing a short name, suitable for lablling a node in a graph.
		/// </summary>
		
		string Label {
			get;
		}
		
		/// <summary>
		/// Gets a list of cross references that can be used to tie this sequence to other
		/// database entries, eg, GI, GeneId, ProteinId.
		/// </summary>
		
		IEnumerable<Xref> Xref {
			get;
		}
		
		/// <summary>
		/// Get the length of the sequence.
		/// </summary>
		
		long Length {
			get;
		}
	}
}
